package main

import (
	"fmt"
	"math/rand"
	"time"
)

// 随机生成20以内的20个非0正整数，打印出来。对生成的数值，第单数个（不是索引）累加求和，第偶数个累乘求积。打印结果

func main() {
	r := rand.New(rand.NewSource(time.Now().UnixNano()))
	var (
		sum            = 0
		product uint64 = 1
	)

	fmt.Println("生成的20个随机数 (1-20):")
	for i := 0; i < 20; i++ {
		v := r.Intn(20) + 1
		fmt.Printf("%2d ", v)

		// 使用位运算判断，但注释说明清楚
		if i&1 == 0 { // 第单数个（索引0,2,4...对应位置1,3,5...）
			sum += v
		} else { // 第偶数个（索引1,3,5...对应位置2,4,6...）
			product *= uint64(v)
		}

		if (i+1)%10 == 0 {
			fmt.Println()
		}
	}

	fmt.Printf("\n结果:\n")
	fmt.Printf("第单数个(1,3,5,...,19)的累加和: %d\n", sum)
	fmt.Printf("第偶数个(2,4,6,...,20)的累乘积: %d\n", product)
}
